docker篇 |
您所在的位置:网站首页 › docker 驱动 › docker篇 |
docker存储驱动
关于存储驱动
每个docker容器都有一个本地存储空间,用于保护层叠的镜像层(Image Layer)以及挂载的容器文件系统。 默认情况下,容器的所有读写操作都发生在其镜像层上或挂载的文件系统上,所以存储是容器的性能和稳定性不可获取的一个环节。 对比以往的本地存储,本地存储是通过存储驱动(Storage Driver)进行管理的,有时候也称之为Graph Driver或者GraphDriver。 虽然存储驱动在上层抽象设计中都采用栈式镜像层存储和写时复制的设计思想,但是docker在linux底层支持几种不同的存储驱动的具体实现,每一种实现方式都采用了不同的方法实现了镜像层和写时复制。 总结,如下表所示: 传统存储驱动Docker存储驱动设计思想栈式镜像存储栈式镜像存储写时复制写时复制区别(linux)单一实现基于linux底层支持,采用了不同的方法实现上述两种思想区别(windows)单一实现windows Filter 注意:存储驱动选择是节点级别的。这意味着每个docker主机只能选择一种存储驱动,而不能为每个容器选择不同的存储驱动。修改位置:/etc/docker/daemon.json文件修改存储驱动配置,修改之后需要重启docker才能够生效。 每种存储驱动,镜像的存储位置是不同的,修改存储驱动类型之后,原存储驱动的镜像不可用。切回去之后又可以使用。 如果希望继续使用镜像,则需要将原镜像保存为docker形式,上传到某个镜像仓库,修改存储驱动重启后,将镜像拉倒本地,重启容器既可使用。 查询命令:docker system info 建议: 下面的清单可以作为一个参考指南,帮助我们选择合适的存储驱动。同时还可以参阅 Docker 官网上由 Linux 发行商提供的最新文档来做出选择。 Red Hat Enterprise Linux:4.x版本内核或更高版本 + Docker 17.06 版本或更高版本,建议使用 Overlay2。Red Hat Enterprise Linux:低版本内核或低版本的 Docker,建议使用 Device Mapper。Ubuntu Linux:4.x 版本内核或更高版本,建议使用 Overlay2。Ubuntu Linux:更早的版本建议使用 AUFS。SUSE Linux Enterprise Server:Btrfs。 Device Mapper配置大部分Linux存储驱动不需要或者需要很少的配置。但是device mapper配置需要合理配置之后才会表现出更好的性能。 默认情况下,Device Mapper采用的是loopback mounted sparse file作为底层实现来为Docker提供支持。 开箱即用对性能没有要求,可以使用,但是对于生产环境,往往是满足不了性能的要求,实际上是性能比较差,不支持生产环境。 达到最佳性能,需要将底层实现修改为direct-lvm模式。 direct-lvm模式通过使用基于裸块设备(Raw Block Device)的LVM精简池(LVM thin pool)来获取更好的性能。在Docker17.06以及更高的版本中可以配置direct-lvm作为存储驱动。但是这种方式只能配置一个块设备,并且在第一次安装后才能设置生效。目前这种方式性能和可靠性有一定风险。 个人学习使用 文章总结出处 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |